The cloud computing environment is an enhancement to the predecessor grid environment, whereby multiple grids and other computation resources may be further abstracted by a cloud layer, thus making disparate devices appear to an end-user as a single pool of seamless resources. These resources may include such things as physical or logical compute engines, servers and devices, device memory, storage devices, networks, business applications and other software, and the like.
Storage clouds often rely on virtualized storage in order to provide a dynamic easy-to-manage storage infrastructure. However, provisioning this virtual storage is challenging as it potentially involves multiple heterogeneous storage subsystems with different capabilities. Typical solutions use either complex device modeling (which works for only a few types of subsystems) or use static allocation by pre-provisioning storage across workloads. Both approaches are inadequate for a cloud environment.